Data backup is essential to the individual user as well as to the corporate entity. Data stores can now be found on client machines as well as distributed corporate-wide across servers. Thus, consumers desire the capability to backup and restore both client-side databases as well as server-side database to guard against data loss related. Data loss can occur due to many reasons, some of which include database corruption, hardware failures, unintended operations, and disaster recovery.
Moreover, the behavior of client-side and server-side stores can be different and, as such, result in a different set of requirements related to backup/restore scenarios. Specifically, client-side stores typically share characteristics that include limited concurrency, single-user data access, flexibility during downtime, and limitations related to backup capabilities (e.g., online, incremental, etc.). In contrast, server-side databases typically share characteristics that include a high degree of concurrency, multi-user user data access, high availability, and a wide array of backup capabilities.
Endpoint synchronization is a challenging prospect. One technique involves synchronization by maintaining version information about the data being synchronized. When an endpoint needs to be restored from backup due to hardware or software failure, the version information for the data that lives on that node must be repaired to prevent post-restore changes from being missed when sending changes to clients. However, if a node is restored to a point in time that causes the local timestamp to go backward to a time prior, then the node creates “new” changes that have a version which will look old to clients that were synchronizing with this node prior to restore, causing non-convergence.